package com.example.administrator.a11_1media351;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity
        implements MediaPlayer.OnPreparedListener,
        MediaPlayer.OnErrorListener,
        MediaPlayer.OnCompletionListener
{

    Uri uri;
    TextView txvName, txvUri;
    boolean isVideo = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); // 设置屏幕不随手机选择
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // 设置屏幕直向显示
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);// 设置屏幕不进入休眠



        txvName = (TextView) findViewById(R.id.txvName);
        txvUri  = (TextView) findViewById(R.id.txvUri);

        uri = Uri.parse("android.resource://"+getPackageName() + "/" +R.raw.welcome);

        txvName.setText("welcome.mp3");
        txvUri.setText("程序内的乐曲:"+uri.toString());
    }

    public void onPrepared(MediaPlayer arg0){
        // 音乐准备好时要做的事情...
    }

    public boolean onError(MediaPlayer arg0, int arg1, int arg2){
        // 发生错误时要做的事情
        return true;
    }

    public void onCompletion(MediaPlayer arg0){
        // 播放完毕时要做的事情...
    }

    public void onPick(View v) {
        Intent it = new Intent(Intent.ACTION_GET_CONTENT);// 创建动作为"选取内容"的 Intent

        if (v.getId() == R.id.btnPickAudio) {
            it.setType("audio/*");
            startActivityForResult(it, 100);
        } else {
            it.setType("video/*");
            startActivityForResult(it, 101);
        }
    }

    protected void onActivityResult(int requestCode, int resultCode,Intent data){
        super.onActivityResult(requestCode,requestCode,data);

        if(resultCode == Activity.RESULT_OK){
            isVideo = (requestCode == 101); // 记录是否选取了视频文件(当标识码为 101时)
            uri = convertUri(data.getData()); // 获取选取文件的Uri并进行 Uri 格式转换

           // txvName.setText(uri.getLastPathSegment()); //显示文件名(Uri最后一段文字)

            txvName.setText((isVideo ? "视频:":"歌曲:") + uri.getLastPathSegment());// 显示文件名(Uri 最后的一段文字)
            txvUri.setText("文件位置:"+uri.getPath()); // 显示文件路径
        }
    }

    Uri convertUri(Uri uri){ // 将 "content://" 类型的 Uri 转换为 "file://" 的 Uri
        Log.v("==============", uri.toString());
        if(uri.toString().substring(0,7).equals("content")){ // 如果是以 "content" 开头

            String[] colName = {MediaStore.MediaColumns.DATA}; // 声明要查询的字段
            Cursor cursor = getContentResolver().query(uri,colName,null,null,null); // 以 Uri 进行查询.
            cursor.moveToFirst(); // 移到查询结果的第一个记录
            uri = Uri.parse("file://"+cursor.getString(0)); // 将路径转为 Uri
            cursor.close(); // 关闭查询结果
        }
        return uri;
    }


}
